# 布尔类型
# 取值只有两种：真 or 假， 故主要用来逻辑判定
# 真对应：True  假对应：False
# 命题有真假，正好对应了布尔类型的两种取值
c1 = True
c2 = False
print(type(c1))
print(type(c2))

# 不同的数据类型，占用的内存空间是不同的，
# int默认是4个字节，但其取值范围是无穷，所以会动态扩容
# float固定是8个字节，
# bool -> 1个字节
# str类型随着其对应的字符串长度的增加，所占的内存空间也增加

# 不同的类型，对应的能够进行的操作也不同
# int or float类型的数据都可以进行 加、减、乘、除
# str类型的数据可以进行 字符串拼接， 但是不能进行数学运算

# 动态类型：
# 程序运行过程中，变量的类型可能发生改变

# 静态类型：
# 程序运行过程中，变量的类型始终不变
# 这种类型一般出现在C++中

# 强调：
# 一种编程语言是否是动态类型，
# 只取决于运行时其类型是否发生改变
# 不取决于变量定义的时候是否声明类型
# python作为一种动态类型的语言，在定义变量的时候，
# 也是可以写类型的，比如如下程序
a:int = 10
print(type(a))

a:str = 'hello'
print(type(a))

a:bool = True
print(type(a))

# 动态类型的缺点
# 更容易出错，尤其是在大型程序开发中，
# 动态类型越多，则人与人之间的沟通成本更高
